package advanced.design_mode.templatemode;

/**
 * 整个业务流程由模板固定, 只是某些环节的实际逻辑 由子类复习方法实现
 * <p>
 * 本质上是一个多态的体现
 */
public abstract class BankTemplate {
    private void takeNumber() {
        System.out.println("取号, 排队");
    }

    //办理业务, 但是这个业务是灵活的, 有子类来复习
    abstract void transact();

    private void evaluate() {
        System.out.println("对服务评分////");
    }

    public final void process() {
        this.takeNumber();
        this.transact();//由子类来实现具体的业务逻辑
        this.evaluate();
    }


}
